Distributed systems typically comprise a multitude of heterogeneous applications all communicating using different languages. In order for two such different applications to communicate with one another, it is necessary that data in a format A from the first application is transformed into data in a format B understood by the second application. FIG. 1a shows a first example of the components that enable such a transformation to take place.
Application 10, by way of example, uses a SAP internal data format. In order to communicate with application 50, a request from application 10 may go via a message broker/intermediary system 30. Adapter 20 interfaces with Application 10 and transfers the SAP internal formatted message to broker 30. At the broker it is determined that the message is destined for application 50 which uses an Ariba internal format. The broker therefore transforms the message received from application 10 into an Ariba internal message format suitable for transferring the message to application 50. Upon receipt of this message, adapter 40 interfaces with application 50 and communicates the Ariba formatted message.
It should however be appreciated from the above that the number of individual transformations required can be huge. A formula for determining the number of transformations is n*n−1, where n is the number of data types used (e.g. message sets, where a message set is the set of messages understood by one application), and we are defining transformations in both directions.
For this reason an alternative solution was developed. Referring to FIG. 1b, a “standard” format for communication is agreed upon by adapters 20 and 40. One example of such a format is the Business Object Document (BOD) specification defined by the Open Applications Group. When application 10 wishes to communicate with application 50, adapter 20 converts the data into BOD form which is received by adapter 40 and transformed into the Ariba data format. The number of transformations now is 2*n. Therefore for small numbers of applications there is no benefit, (e.g. 2 applications=4 transformations vs. 2 in the original design of FIG. 1a), but for larger numbers of applications the benefits are important (e.g. 5 applications=10 transformations vs. 20 in the original design of FIG. 1a). While FIGS. 1a and 1b show different integration topologies, this is not relevant to the transformation reduction. It is possible, for example, to achieve the same results by transforming to the “standard” format in the intermediary system.
Nevertheless, it will be appreciated that a highly labour intensive activity when performing Enterprise Application Integration is the definition of data/message transformations. Each message set can be large and complex and typically consists of a number of different messages each containing a variety of different fields. For example, the OAG BOD standard version 7.1 has over 180 different messages. Ordinarily the user selects source and target messages and a tool presents them side by side. The user then defines the relationships between fields in the source message and fields in the target message.
With reference to FIG. 2 it can be seen that message set A has a “part” message containing the fields “name”; “id”; “price”; and “description”. Message set B has a corresponding message and fields but uses different terms to refer to these. Thus a user has to identify that the “part” message in message set A corresponds to the “item” message in message set B. The user then has to map the fields within the “part” message to the fields within the “item” message. Thus “name” is mapped to “prodname”; and “ID” is mapped to “identifier” etc.
This example is simple in that there is only one message in each set and there is a one to one correspondence between the fields. The reality is however typically far more complicated in that there may be numerous message sets; messages and fields to contend with and that there is not necessarily a one to one correspondence between the fields in two messages. Thus it is typically an onerous task to define the required transformations between messages in different message sets.